package org.splink.deepsplink.page {
	import org.splink.deepsplink.authentication.IAuthenticator;
	import org.splink.deepsplink.interceptor.IInterceptor;

	/**
	 * A <code>Page</code> subclass which adds authentication methods.
	 * The <code>IAuthenticationPage</code> must be registed with the
	 * <code>IDeepsplinkFacade</code> in order to get provided with the
	 * authenticator and securityInterceptor. 
	 * 
	 * @author Max Kugland
	 */
	public interface IAuthenticationPage extends IPage {
		
		/**
		 * Sets an authenticator implementation
		 * 
		 * @param authenticator the <code>IAuthenticator</code> instance which is in charge
		 * of handeling authentication requests
		 * 
		 * @see org.splink.deepsplink.authentication.IAuthenticator
		 */
		function set authenticator(auth : IAuthenticator) : void;
		
		/**
		 * Sets the security interceptor, which grants access to
		 * the last intercepted page id.
		 * 
		 * @param securityInterceptor the <code>IInterceptor</code> instance which is in charge
		 * of protecting protected pages
		 * 
		 * @see org.splink.deepsplink.interceptor.SecurityInterceptor
		 */
		function set securityInterceptor(interceptor : IInterceptor) : void;
	}
}
